---------------------------------------------------------------------------- Disk Manager and SmartDrv 4.0 - (Technical version) ---------------------------------------------------------------------------- NOTE: The information provided in this document is intended for advanced hardware and software engineers. This level of information is not required by most users, therefore, Ontrack Technical Support will not provide detailed support regarding its contents. The new SmartDrv disk cache version 4.0, which is being supplied with Microsoft Windows version 3.1, is now compatible with all versions of Ontrack's Disk Manager hard disk installation software or, more specifically, our block device driver DMDRVR.BIN. This level of compatibility exists because SmartDrv 4.0 caches at the block device level rather than at the INT13 level as in previous versions. The SmartDrv double buffer driver, however, still uses INT13 and there are a few problems as a result. In almost all cases a few minor changes to your CONFIG.SYS file will allow SmartDrv and DMDRVR.BIN to work together if you do encounter problems. The purpose of SmartDrv's double buffering is to provide support for SCSI host adapters that use BUS Master DMA (channels 5, 6 and 7) for data transfers, allowing them to be compatible with Windows 386 enhanced mode. Without double buffer support, Windows will not load in 386 enhanced mode when such a host adapter is detected. The incompatibility of these host adapters with 386 enhanced mode results from the method they use when transferring data. The term DMA, as used in this document refers to BUS Master DMA. When a data transfer is initiated through a SCSI host adapter, a transfer buffer address is passed by the processor to the host adapter. The host adapter will take control of the I/O BUS to transfer data into or out of the buffer. At a DOS level, and even in Windows standard mode, this works fine since the address passed is relative to physical 0000:0000. When Windows runs in 386 enhanced mode, however, each virtual machine (VM) is located in a different area of physical memory. All addresses used by a VM are relative to the starting memory address of that VM, not physical 0000:0000. Hence these 'logical' addresses are valid for that VM, but are not valid if used as references from physical 0000:0000. The host adapter, unaware that the address passed is not relative to physical 0000:0000, treats the address as though it were and performs the transfer. The result is that the data written or read by the host adapter is not valid and serious corruption could occur. As previously indicated, Windows 3.1 will prevent this problem by not allowing you to run in 386 enhanced mode. SmartDrv's double buffer solves this problem by establishing a transfer buffer in conventional memory, before Windows is loaded. This buffers address is relative to physical 0000:0000. SmartDrv will pass the address of this buffer to the host adapter for data transfers, then move the data from this buffer into and out of the cache, hence the name double buffer. This allows reliable transfers to occur in 386 enhanced mode, with only a small amount of overhead. SmartDrv's double buffering is not required unless a SCSI host adapter that uses DMA is installed in your system. Windows 3.1 Setup, however, will install double buffering any time that it can not conclusively determine that it is not required. Such a situation occurs in a system with a drive having more than 1024 cylinders, a condition permitted by DMDRVR.BIN and the XBIOS.OVL INT13 overlay. As a result, double buffering may be installed when it is not required. Double buffering is enabled when setup places the following device statement in your CONFIG.SYS file. DEVICE=C:\WINDOWS\SMARTDRV.EXE /DOUBLE_BUFFER The only purpose for placing a SmartDrv device statement in your CONFIG.SYS file is to enable double buffering. The SmartDrv cache is installed by a separate command line in AUTOEXEC.BAT and does not require double buffering in order for it to operate. There are two conditions under which SmartDrv's double buffering will cause problems when used in conjunction with DMDRVR.BIN and XBIOS.OVL. Though they are not related, both conditions may exist on some systems and share some common resolutions. Please be sure to read both descriptions before making any changes to your system. The conditions are listed below along with their respective considerations. I. DRIVES WITH MORE THAN 1024 CYLINDERS SmartDrv's double buffer is not compatible with XBIOS.OVL, Ontrack Disk Manager software's over 1024 cylinder support. The incompatibility results from the double buffer driver's operation at the INT13 level and inability to communicate successfully with XBIOS.OVL. SmartDrv will attempt to determine if over 1024 cylinder support is being provided by DMDRVR.BIN and XBIOS.OVL and unload the double buffer to avoid conflicts. Changes made to Disk Manager software version 5.10, that SmartDrv 4.0 is unaware of, cause it not to unload in situations where it must in order to avoid conflicts. Since double buffering is only required for SCSI host adapters, which are not supported by XBIOS.OVL, the solution is to enable double buffering only when a SCSI host adapter is present, and disable it otherwise. The following combines the possible configurations into three groups, each with its own configuration requirements. 1) System without a SCSI host adapter. If your computer system does not have a SCSI host adapter that uses DMA, you do not need double buffering. In order to be compatible with XBIOS.OVL you must remove the SmartDrv device statement, DEVICE=C:\WINDOWS\SMARTDRV.EXE /DOUBLE_BUFFER, from your CONFIG.SYS file. You do not have to remove the SmartDrv device statement unless you have a drive with more than 1024 cylinders, however, it does no good to leave it in. 2) System with a SCSI host adapter but no drives with more than 1024 cylinders. If your computer has a SCSI host adapter that uses DMA but does not have a non-SCSI drive with more than 1024 cylinders, you need to use double buffering. You must leave the SmartDrv device statement in your CONFIG.SYS file. Since the presence of DMDRVR.BIN may mask the need for double buffering, you should modify the device statement in your CONFIG.SYS file to include a PLUS SIGN which forces the double buffer to stay loaded. The statement should appear as follows, be sure there is no space before the PLUS SIGN. DEVICE=C:\WINDOWS\SMARTDRV.EXE /DOUBLE_BUFFER+ 3) System with a SCSI host adapter and a drive with more than 1024 cylinders. If your computer has both a SCSI Host Adapter that uses DMA and a non-SCSI drive with more than 1024 cylinders you can not use SmartDrv's double buffer. As a result you will not be able to run Windows in 386 enhanced mode. You must remove the SmartDrv device statement, DEVICE=C:\WINDOWS\SMARTDRV.EXE /DOUBLE_BUFFER, from your CONFIG.SYS file. In order to use SmartDrv's double buffer support, and hence 386 enhanced mode, it will be necessary for you to reconfigure your system to eliminate either the SCSI device or the over 1024 condition. There may be other software solutions to this problem, such as a double buffer driver from your SCSI host adapter's manufacturer. II. LOGICAL SECTOR SIZES GREATER THAN 512 BYTES NOTE: DOS 4.0, 4.01 and 5.0 (and Compaq 3.31) require that all logical sectors be 512 bytes. If you are using one of these DOS versions, the information provided in this section is not applicable to your configuration. The information provided below is superseded by the considerations for DRIVES WITH MORE THAN 1024 CYLINDERS, as presented above. Under DOS versions 3.30 and prior, the number of logical sectors that can exist in one partition is limited, hence the 32MB limit on partition size. Since the number of logical sectors in the partition cannot be increased, it is necessary to increase the logical sector size in order to overcome the 32MB size limit. When double buffering is enabled by a SmartDrv device statement in your CONFIG.SYS file, SmartDrv will attempt to determine if double buffering is actually required. If SmartDrv determines that double buffering is not required, it will unload the double buffer. If your hard disk has partitions with logical sector sizes greater than 512 bytes, the double buffer will not unload successfully and DOS will display the following message. SECTOR SIZE TOO LARGE IN FILE SMARTDRV.EXE This message does not indicate that the SMARTDRV.EXE file is corrupted, however, DOS is unstable at this point and the computer will not function correctly. The following combines the possible configurations into two groups, each with its own configuration requirements. 1) System without a SCSI host adapter. If your computer does not have a SCSI host adapter that uses DMA, you do not need double buffering. In order to be compatible with DMDRVR.BIN's support for partitions larger than 32MB under DOS 3.30 and prior, and XBIOS.OVL, you must remove the SmartDrv device statement, DEVICE=C:\SMARTDRV.EXE /DOUBLE_BUFFER, statement from your CONFIG.SYS file. 2) System with a SCSI host adapter. If your computer has a SCSI host adapter that uses DMA, you need double buffering. In order to be compatible with DMDRVR.BIN's support for large partitions under DOS 3.30 and prior, you should modify the SmartDrv device statement in your CONFIG.SYS file to include a PLUS SIGN. The PLUS SIGN forces the double buffer to stay loaded, preventing the DOS error. The statement should appear as follows, be sure there is no space before the PLUS SIGN. DEVICE=C:\WINDOWS\SMARTDRV.EXE /DOUBLE_BUFFER+ The information provided above encompasses all known considerations for using Disk Manager software in conjunction with SmartDrv 4.0. This document will be updated as new information and solutions become available. If you feel that you have a problem not covered in this document, or have information on manufacturer supplied double buffer drivers, please contact Ontrack Technical Support at (612)937-2121. ----------------------------------------------------------------------------